Lexical norms from Lancaster Sensorimotor Norms¶
Single predictor models using Lancaster Sensorimotor Norms.
%load_ext autoreload
%autoreload 2
from tools.create import create_single_models
from tools.base import (dump_collection, load_collection,
flatten_collection, compute_metrics,
_extract_regressors)
from tools.viz import (plot_regressor, plot_regressor,
plot_metrics, plot_contrast_by_dataset, plot_contrast_by_analysis,
plot_analysis_grid)
from pyns import Neuroscout
import numpy as np
from matplotlib import pyplot as plt
from pathlib import Path
%matplotlib inline
Set up API by importing credentials as environment variables.
api = Neuroscout()
Define predictors and confounds¶
predictors = ['lancastersensorimotornorms_Visual.mean', 'lancastersensorimotornorms_Auditory.mean',
'lancastersensorimotornorms_Olfactory.mean', 'lancastersensorimotornorms_Haptic.mean',
'lancastersensorimotornorms_Gustatory.mean', 'lancastersensorimotornorms_Interoceptive.mean',
'lancastersensorimotornorms_Foot_leg.mean', 'lancastersensorimotornorms_Hand_arm.mean',
'lancastersensorimotornorms_Head.mean', 'lancastersensorimotornorms_Mouth.mean',
'lancastersensorimotornorms_Torso.mean']
confounds = ['a_comp_cor_00', 'a_comp_cor_01', 'a_comp_cor_02', 'a_comp_cor_03', 'a_comp_cor_04', 'a_comp_cor_05', 'trans_x', 'trans_y', 'trans_z', 'rot_x', 'rot_y', 'rot_z']
control = ['speech']
Create single predictor models¶
transformations = [{"Name": "Scale",
"Demean": True,
"Rescale": True,
"ReplaceNA": "after",
"Input": [p]} for p in predictors]
single_models = create_single_models(predictors, confounds, control=control,
transformations=transformations)
filename = Path('models') / 'lexical_sensorimotor_norms.json'
dump_collection(single_models, filename)
single_models = load_collection(filename)
Generate reports¶
for (pred, dataset, task), model in flatten_collection(single_models):
model.generate_report(run_id=model.runs[0])
for p in predictors:
single_models[p]['Budapest']['movie'].plot_report()
Inspect regressors¶
df = _extract_regressors(single_models)
plot_regressor('distribution', df=df, split_by='hue', color=None, aspect=3, hist=None, rug=True)
plot_regressor('timeseries', df=df, split_by='row', height=1.2, aspect=10)
agg_df = compute_metrics(df=df, aggfunc=[np.mean, np.std, np.var])
plot_metrics(agg_df, metrics=['mean', 'std', 'var'],
sns_function='barplot', height=3, aspect=1)
Compile models¶
for (pred, dataset, task), model in flatten_collection(single_models):
if model.get_status()['status'] == 'DRAFT':
model.private = False
model.push()
model.compile()
else:
print(f'{pred} {model.status} for {dataset}')
lancastersensorimotornorms_Auditory.mean PASSED for Budapest
lancastersensorimotornorms_Auditory.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Auditory.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Auditory.mean PASSED for Life
lancastersensorimotornorms_Auditory.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Auditory.mean PASSED for Raiders
lancastersensorimotornorms_Auditory.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Auditory.mean PASSED for Sherlock
lancastersensorimotornorms_Auditory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Auditory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Foot_leg.mean PASSED for Budapest
lancastersensorimotornorms_Foot_leg.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Foot_leg.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Foot_leg.mean PASSED for Life
lancastersensorimotornorms_Foot_leg.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Foot_leg.mean PASSED for Raiders
lancastersensorimotornorms_Foot_leg.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Foot_leg.mean PASSED for Sherlock
lancastersensorimotornorms_Foot_leg.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Foot_leg.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Gustatory.mean PASSED for Budapest
lancastersensorimotornorms_Gustatory.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Gustatory.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Gustatory.mean PASSED for Life
lancastersensorimotornorms_Gustatory.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Gustatory.mean PASSED for Raiders
lancastersensorimotornorms_Gustatory.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Gustatory.mean PASSED for Sherlock
lancastersensorimotornorms_Gustatory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Gustatory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Hand_arm.mean PASSED for Budapest
lancastersensorimotornorms_Hand_arm.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Hand_arm.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Hand_arm.mean PASSED for Life
lancastersensorimotornorms_Hand_arm.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Hand_arm.mean PASSED for Raiders
lancastersensorimotornorms_Hand_arm.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Hand_arm.mean PASSED for Sherlock
lancastersensorimotornorms_Hand_arm.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Hand_arm.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Haptic.mean PASSED for Budapest
lancastersensorimotornorms_Haptic.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Haptic.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Haptic.mean PASSED for Life
lancastersensorimotornorms_Haptic.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Haptic.mean PASSED for Raiders
lancastersensorimotornorms_Haptic.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Haptic.mean PASSED for Sherlock
lancastersensorimotornorms_Haptic.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Haptic.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Head.mean PASSED for Budapest
lancastersensorimotornorms_Head.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Head.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Head.mean PASSED for Life
lancastersensorimotornorms_Head.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Head.mean PASSED for Raiders
lancastersensorimotornorms_Head.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Head.mean PASSED for Sherlock
lancastersensorimotornorms_Head.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Head.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Interoceptive.mean PASSED for Budapest
lancastersensorimotornorms_Interoceptive.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Interoceptive.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Interoceptive.mean PASSED for Life
lancastersensorimotornorms_Interoceptive.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Interoceptive.mean PASSED for Raiders
lancastersensorimotornorms_Interoceptive.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Interoceptive.mean PASSED for Sherlock
lancastersensorimotornorms_Interoceptive.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Interoceptive.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Mouth.mean PASSED for Budapest
lancastersensorimotornorms_Mouth.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Mouth.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Mouth.mean PASSED for Life
lancastersensorimotornorms_Mouth.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Mouth.mean PASSED for Raiders
lancastersensorimotornorms_Mouth.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Mouth.mean PASSED for Sherlock
lancastersensorimotornorms_Mouth.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Mouth.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Olfactory.mean PASSED for Budapest
lancastersensorimotornorms_Olfactory.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Olfactory.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Olfactory.mean PASSED for Life
lancastersensorimotornorms_Olfactory.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Olfactory.mean PASSED for Raiders
lancastersensorimotornorms_Olfactory.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Olfactory.mean PASSED for Sherlock
lancastersensorimotornorms_Olfactory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Olfactory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Torso.mean PASSED for Budapest
lancastersensorimotornorms_Torso.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Torso.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Torso.mean PASSED for Life
lancastersensorimotornorms_Torso.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Torso.mean PASSED for Raiders
lancastersensorimotornorms_Torso.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Torso.mean PASSED for Sherlock
lancastersensorimotornorms_Torso.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Torso.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Visual.mean PASSED for Budapest
lancastersensorimotornorms_Visual.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Visual.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Visual.mean PASSED for Life
lancastersensorimotornorms_Visual.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Visual.mean PASSED for Raiders
lancastersensorimotornorms_Visual.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Visual.mean PASSED for Sherlock
lancastersensorimotornorms_Visual.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Visual.mean PASSED for SherlockMerlin
' '.join([a[1].hash_id for a in flatten_collection(single_models)])
'Ma4P1 M8Lry wQDrk wOVKP MXmXD A1GYY AVr1k Abn5Z MnP5g wWVO5 M4jXg M34X8 wl85e MDzp4 wQoez 9Bb77 AYXYb w0vVN wK375 Aobla 97pWO wgjXY Aop5J wlyGp AxkKD A6mPp MPK73 wJJ7p M34Xz AYXYr A251p Mzqrj AxBl6 AVrxa A1G16 M8LG3 AdpVB wOVPd MXmPK AbndV 9L2lz MNW0Z wK2B7 AZyB2 MvbQb 9eK5k M5Q0P Mmvq3 Mp8xb wyDod MNQJl wWVJr wJ3Yb AqbYb MaqV4 MGb4l 9EW70 wjvqP 9Lq4p 97vZe wkV2y MDzpo A6oKd wK37j Aoblm w0vVD wQoel A6mPQ wlyGX AxkKb M55Px M4nmG M37DP M5Qm6 9eKb6 MNW4N A2YmL AZy01 MvbK7 Mmvlx wjN40 MGbx3 w0g33 wjv5X 9LqDV Maq5J Aqb5O 97voB wkK53 M4nQz 9eya7 wyDz0 AYybj MPKvE A6m4Q wgjWR MR2lg wly6X Axkrb wJJ4m AqQm8 9BbWn MD1Gm w0v3D wK3Bj wQorl MDzGo Aob5m Ar65Q MzqJ5'
Results¶
flat_models = flatten_collection(single_models)
plt.rcParams.update({'font.family': 'monospace'})
plot_contrast_by_analysis(flat_models, contrasts=predictors,
vmax=10, display_mode='z', figsize=(12,15),
threshold=1.96, colorbar=False)